package com.taxx.excel.listener;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;

/**
 * Excel监听器工厂
 * 确保每次导入都使用新的监听器实例，避免数据累积问题
 */
@Component
public class ExcelListenerFactory {
    
    @Autowired
    private ApplicationContext applicationContext;
    
    /**
     * 创建身份信息监听器实例
     */
    public IdentityExcelListener createIdentityListener() {
        return new IdentityExcelListener();
    }
    
    /**
     * 创建收入信息监听器实例
     */
    public IncomeExcelListener createIncomeListener() {
        return new IncomeExcelListener();
    }
    
    /**
     * 创建平台信息监听器实例
     */
    public PlatformExcelListener createPlatformListener() {
        return new PlatformExcelListener();
    }
    
    /**
     * 创建身份信息监听器实例（带服务注入）
     */
    public IdentityExcelListener createIdentityListenerWithService() {
        IdentityExcelListener listener = new IdentityExcelListener();
        // 手动注入服务 - 使用接口类型获取Bean
        listener.setTaxIdentityReportService(
            applicationContext.getBean(com.taxx.service.TaxIdentityReportService.class)
        );
        return listener;
    }
    
    /**
     * 创建收入信息监听器实例（带服务注入）
     */
    public IncomeExcelListener createIncomeListenerWithService() {
        IncomeExcelListener listener = new IncomeExcelListener();
        // 手动注入服务 - 使用接口类型获取Bean
        listener.setTaxIncomeReportService(
            applicationContext.getBean(com.taxx.service.TaxIncomeReportService.class)
        );
        return listener;
    }
    
    /**
     * 创建平台信息监听器实例（带服务注入）
     */
    public PlatformExcelListener createPlatformListenerWithService() {
        PlatformExcelListener listener = new PlatformExcelListener();
        // 手动注入服务 - 使用接口类型获取Bean
        listener.setTaxPlatformReportService(
            applicationContext.getBean(com.taxx.service.TaxPlatformReportService.class)
        );
        return listener;
    }
}
